﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;

namespace ReAnimation.Helpers.DynamicProxy
{
    public interface IEventsHandlersCollector
    {
        IEventsHandlersCollector AfterPropertySet<T>(Expression<Func<T>> getPropertyExpression);
        IEventsHandlersCollector BeforePropertySet<T>(Expression<Func<T>> getPropertyExpression);

        IEventsHandlersCollector AfterMethodCall<T>(Expression<Action<T>> methodCallExpression);
        IEventsHandlersCollector BeforeMethodCall<T>(Expression<Action<T>> methodCallExpression);

        void Handler(Action handler);

        void RemoveHandler(Action handler);

        void ClearSubscriptions();
    }
}
